package com.ruoyi.staff.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.staff.domain.StaffContract;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.staff.mapper.StaffBaseinfoMapper;
import com.ruoyi.staff.domain.StaffBaseinfo;
import com.ruoyi.staff.service.IStaffBaseinfoService;
import com.ruoyi.common.core.text.Convert;

/**
 * 员工基础信息Service业务层处理
 * 
 * @author bzs
 * @date 2021-08-22
 */
@Service
public class StaffBaseinfoServiceImpl implements IStaffBaseinfoService 
{
    @Autowired
    private StaffBaseinfoMapper staffBaseinfoMapper;

    /**
     * 查询员工基础信息
     * 
     * @param stfId 员工基础信息ID
     * @return 员工基础信息
     */
    @Override
    public StaffBaseinfo selectStaffBaseinfoById(Long stfId)
    {
        return staffBaseinfoMapper.selectStaffBaseinfoById(stfId);
    }

    /**
     * 查询员工基础信息列表
     * 
     * @param staffBaseinfo 员工基础信息
     * @return 员工基础信息
     */
    @Override
    public List<StaffBaseinfo> selectStaffBaseinfoList(StaffBaseinfo staffBaseinfo)
    {
        return staffBaseinfoMapper.selectStaffBaseinfoList(staffBaseinfo);
    }

    /**
     * 查询员工基础信息列表
     *
     * @param stfIds 员工基础信息
     * @return 员工基础信息集合
     */
    public List<StaffBaseinfo> selectStaffBaseinfoListByIds(String[] stfIds){
        return staffBaseinfoMapper.selectStaffBaseinfoListByIds(stfIds);
    }

    /**
     * 新增员工基础信息
     * 
     * @param staffBaseinfo 员工基础信息
     * @return 结果
     */
    @Override
    public int insertStaffBaseinfo(StaffBaseinfo staffBaseinfo)
    {
        return staffBaseinfoMapper.insertStaffBaseinfo(staffBaseinfo);
    }

    /**
     * 修改员工基础信息
     * 
     * @param staffBaseinfo 员工基础信息
     * @return 结果
     */
    @Override
    public int updateStaffBaseinfo(StaffBaseinfo staffBaseinfo)
    {
        return staffBaseinfoMapper.updateStaffBaseinfo(staffBaseinfo);
    }

    /**
     * 删除员工基础信息对象
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteStaffBaseinfoByIds(String[] ids)
    {
        return staffBaseinfoMapper.deleteStaffBaseinfoByIds(ids);
    }

    /**
     * 删除员工基础信息信息
     * 
     * @param stfId 员工基础信息ID
     * @return 结果
     */
    @Override
    public int deleteStaffBaseinfoById(Long stfId)
    {
        return staffBaseinfoMapper.deleteStaffBaseinfoById(stfId);
    }

    /**
     * 根据证件号判断该证件号是否已存在
     * @param idCard
     * @return
     */
    @Override
    public boolean checkStaffExist(String idCard){
        return staffBaseinfoMapper.checkidCardExist(idCard);
    }


    /**
     * 导入员工合同关系
     * @param lists
     * @param updateSupport
     * @param sysUser
     * @return
     */
    @Override
    public String importcontractRelations(List<StaffBaseinfo> lists, boolean updateSupport, SysUser sysUser) {
//        int successNum = 0;
//        int failureNum = 0;
//        StringBuffer successMsg = new StringBuffer();
//        StringBuffer failureMsg = new StringBuffer();
//        for (StaffBaseinfo sb:lists){
//            try {
//                //验证是否存在这个员工基础信息
//                StaffBaseinfo sbaseinfo = staffBaseinfoMapper.selectStaffBaseinfoByIdCard(sb.getStfIdCard());
//                if (StringUtils.isNull(sbaseinfo)){
//                    staffBaseinfoMapper.insertStaffBaseinfo(sb);
//                    successNum++;
//                    successMsg.append("<br/>"+successNum+"、"+sb.getStfIdCard()+"导入成功");
//                }else if (updateSupport){
//                    staffBaseinfoMapper.updateStaffBaseinfo(sb);
//                    successNum++;
//                    successMsg.append("<br/>"+successNum+"、"+sb.getStfIdCard()+"更新成功");
//                }else{
//                    failureNum++;
//                    failureMsg.append("<br/>"+failureNum+"、"+sb.getStfIdCard()+"已存在");
//                }
//            }catch (Exception e){
//                failureNum ++;
//                failureMsg.append("<br/>"+failureNum+"、导入失败");
//            }
//        }
//        if(failureNum > 0){
//            failureMsg.insert(0, "很抱歉，导入失败！共"+failureNum+"条数据格式不正确，错误如下：");
//            throw new BusinessException(failureMsg.toString());
//        }else {
//            successMsg.insert(0, "恭喜您数据已全部导入成功！共"+ successNum +"条，数据如下：");
//        }
//        return successMsg.toString();
        return null;
    }

    /**
     *校验Excel数据是否满足条件
     *
     * @param lists
     * @return
     */
    @Override
    public String validateDatas(List<StaffBaseinfo> lists) {
        StringBuilder sb =new StringBuilder();
        if (StringUtils.isEmpty(lists)){
            sb.append("execel中无任何数据，请认证填写！");
        }else {
            for (int i = 0; i <lists.size() ; i++) {
                if (StringUtils.isBlank(lists.get(i).getStfName())){
                    sb.append("第"+(i+1)+"行"+"、姓名不符合标准！<br/>");
                }
//                if (StringUtils.isBlank(lists.get(i))){
//                    sb.append("第"+(i+1)+"行"+"、证件号不符合标准！<br/>");
//                }
            }
        }
        if (sb.length()>0){
            return sb.toString();
        };
        return "";
    }
}
